/*    
    OpenMheg - A free MHEG-5 library
    Copyright (C) 2008 Dharmesh Malam

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using Core.Model.Ingredients;
using Core.Model.Ingredients.Presentable;
using Parser;

namespace XMHEGDecoder.Builders.Visibles
{
    public class StreamBuilder
    {

        public static Stream Build ( XmlElement node )
        {
            Stream stream = new Stream();
            IngredientBuilder.Build( node, stream );

            #region  Add our attributes

            XmlElement e = node ["multiplex"];
            if ( e != null )
                stream.Multiplex = BuildMultiplex( e );

            if ( ( e = node ["storage"] ) != null ) { 
            }
                //stream.Storage = 

            if ( ( e = node ["looping"] ) != null )
            {
                stream.Looping = DecodeUtils.ParseInt( e.InnerText );
            }
            
            return stream;
            #endregion
        }

        private static List<Ingredient> BuildMultiplex ( XmlElement node )
        {
            List<Ingredient> multiplex = new List<Ingredient>();


            XmlElement e = node ["audio"];
            if ( e != null )
                multiplex.Add ( AudioBuilder.Build( e ));

            
            if ( (e = node ["video"]) != null )
                multiplex.Add( VideoBuilder.Build( e ) );

            return multiplex;
        }


    }
}
